// 如果list中有任何一个元素通过 predicate 的真值检测就返回true。一旦找到了符合条件的元素, 就直接中断对list的遍历。 predicate 通过 iteratee 进行转换，以简化速记语法。

import { cb } from "../util/iteratee";
import { isArrayLike } from "./each";

export default function some(obj, predicate, context) {
  predicate = cb(predicate, context);
  var keys = !isArrayLike(obj) && Object.keys(obj)
  var length = (keys || obj).length
  for (var index = 0; index < length; index++) {
    var currentKey = keys ? keys[index] : index
    if (predicate(obj[currentKey], currentKey, obj)) return true
  }
  return false
}